/*
 *  author: Gregorovichz Carlos Rossi
 *  date: 15/05/2010
 */
var registroDocumentoDependencia=null;
var winMantenerDocumentoDependecia=null;
var dsDocumentoDependencia=null;
function gestionarDocumentoDependencia(){
    var frmdependenciaCabecera =new Ext.Panel({
        bodyBorder:true,
        height:150,
        bodyStyle: "background-color:#DFE8F6; border:0"
    });
    dsDocumentoDependencia=new Ext.data.Store({
        autoDestroy: true,
        url: "lista-documento-dependencia",
        reader: new Ext.data.JsonReader(
        {
            root: "documentodependecia",
            fields:
            [
            {
                name: "ndode_identificador",
                type: "integer"
            },
            {
                name: "cdepe_nombre",
                type: "string"
            },
            {
                name: "ctido_descripcion",
                type: "string"
            },
            {
                name: "ntido_identificador",
                type: "integer"
            }
            ]
        })
    });

    dsDocumentoDependencia.on("exception",function(proxy, type, action, options, response, arg){
        Ext.MessageBox.alert("Error","Sucedio un error al cargar los Documento por Dependencia"+response.responseText);
    });

    var grdDocumentoDependencia=new Ext.grid.GridPanel({
        id: "grdDcoumentoDependencia",
        store: dsDocumentoDependencia,
        loadMask: false,
        height:470,
        width:1050,
        border:true,
        frame: true,
        plugins:[new Ext.ux.grid.Search({
            mode:'local',
            iconCls:false,
            minLength:2,
            width: 190
        })],
        columns:
        [new Ext.grid.RowNumberer(),
        {
            header: "Código",
            dataIndex: "ndode_identificador",
            width: 200,
            sortable:true
        },{
            header: "Descripción",
            dataIndex: "ctido_descripcion",
            width: 100,
            sortable:true
        }
        ],
        tbar:[{
            text:'Asignar Documentos',
            iconCls:'icon-add',
            handler: function(){
                cargarAsignarDocumentos();
            }
        },'-',{
            text:'Imprimir',
            iconCls:'icon-print',
            handler: function(){

            }
        }]
    });
    grdDocumentoDependencia.on("rowclick",function(grid,rowIndex,e){
        registroDocumentoDependencia=grid.getStore().getAt(rowIndex);
    });

    var seleccionEstadoDocumento=grdDocumentoDependencia.getSelectionModel();
    seleccionEstadoDocumento.on("rowselect",function(sm,fila,registro){
        registroDocumentoDependencia=registro;
    });

    new Ajax.Request("frmCabeceraDocumentoDependencia.html",{
        method: "post",
        asynchronous:false,
        onSuccess: function(transport){
            frmdependenciaCabecera.html=transport.responseText;
            var win = new Ext.Window({
                title:'Mantenimiento de Documento por Oficina',
                closeAction:'destroy',
                width:1055,
                height: 400,
                x:0,
                y:0,
                shim:false,
                maximizable:false,
                resizable: false,
                animCollapse:false,
                layout: 'border',
                items:[{
                    region: 'north',
                    height: 40,
                    split: false,
                    border:false,
                    layout:'fit',
                    xtype: 'panel',
                    items: frmdependenciaCabecera
                },{
                    region: 'center',
                    title: 'Documentos Asignados',
                    height: 200,
                    split: false,
                    border:false,
                    xtype: 'panel',
                    layout:'fit',
                    bodyStyle: "background-color:#DFE8F6; border:0",
                    items: grdDocumentoDependencia
                }]
            });
            win.show();
            new Ajax.Request("lista-dependencias",{
                method:"post",
                asynchronous:false,
                onSuccess: function (transport){
                    var eSelect = document.getElementById("cbodependencia");
                    removeAllOptions(eSelect);
                    var lstdependencias= transport.responseText.evalJSON();
                    for (var i=0;i<lstdependencias.dependencia.length;i++){
                        var eOption = document.createElement("option");
                        eOption.setAttribute("value", lstdependencias.dependencia[i].ndepeIdentificador);
                        eOption.appendChild(document.createTextNode(lstdependencias.dependencia[i].cdepeNombre));
                        eSelect.appendChild(eOption);
                    }
                    var documentoActual = $("cbodependencia").value;
                    dsDocumentoDependencia.load({
                        params: {
                            ndepecodigo: documentoActual
                        }
                    });

                }
            });
        }
    });
}

function cargarDocumentosDependencia(codigo){
    dsDocumentoDependencia.reload({
        params:{
            ndepecodigo: codigo
        }
        
    });
}

function cargarAsignarDocumentos() {
    var ndepeIdentificador = $("cbodependencia").value;

    var vntAsignarDocumentos = new Ext.Window({
        title: "Asignar Recursos",
        modal: true,
        closeAction: "destroy",
        width: 900,
        height: 300,
        autoLoad:{
            url: "AsignarDocumentosDependencia.html",
            callback: function(el,success,response,options) {
                cargarDocumentosAsignados(ndepeIdentificador);
                cargarDocumentosDisponibles(ndepeIdentificador);
                var form = $("frmAsignarDocumento");
                var cmdAsignar = form.cmdAsignar;
                cmdAsignar.onclick = function(){
                    asignarDocumento();
                }
                var cmdRevocar = form.cmdRevocar;
                cmdRevocar.onclick = function() {
                    revocarDocumento();
                }
            }
        }
    });

    vntAsignarDocumentos.on("destroy",function(ventana){
        var grd = Ext.getCmp("grdDcoumentoDependencia");
        var dsDocumento = grd.getStore();
        dsDocumento.load({
            params:{
                ndepecodigo: ndepeIdentificador
            }

        });
    })

    vntAsignarDocumentos.show();
}


function cargarDocumentosDisponibles(ndepeIdentificador) {
    var form = $("frmAsignarDocumento");
    var documentosDisponibles = form.lstDocumentosDisponibles;
    new Ajax.Request("lista-documentos-dependencia-asignados!disp",{
        method: "post",
        parameters: {
            ndepeIdentificador: ndepeIdentificador
        },
        onSuccess: function(t){
            var data = t.responseText.evalJSON();
            removeAllOptions(documentosDisponibles);
            for(var i=0;i<data.length;i++) {
                var option = document.createElement("option");
                option.value = data[i].ntidoIdentificador;
                option.appendChild(document.createTextNode(data[i].ctidoDescripcion));
                documentosDisponibles.appendChild(option);
            }
        }
    });
}

function cargarDocumentosAsignados(ndepeIdentificador) {
    var form = $("frmAsignarDocumento");
    var documentosAsignados = form.lstDocumentosAsignados;
    new Ajax.Request("lista-documento-dependencia",{
        method: "post",
        parameters: {
            ndepecodigo: ndepeIdentificador
        },
        onSuccess: function(t){
            var data = t.responseText.evalJSON();
            data = data.documentodependecia;
            removeAllOptions(documentosAsignados);
            for(var i=0;i<data.length;i++) {
                var option = document.createElement("option");
                option.value = data[i].ntido_identificador;
                option.appendChild(document.createTextNode(data[i].ctido_descripcion));
                documentosAsignados.appendChild(option);
            }
        }
    });
}

function asignarDocumento() {
    var form = $("frmAsignarDocumento");
    var lstDocumentosDisponibles = form.lstDocumentosDisponibles;
    var lstDocumentosAsignados = form.lstDocumentosAsignados;
    var encontro = false;
    for(var i=0;i<lstDocumentosDisponibles.options.length;i++) {
        if(lstDocumentosDisponibles.options[i].selected) {
            ingresarDocumento(lstDocumentosDisponibles.options[i], lstDocumentosAsignados);
            encontro = true;
            break;
        }
    }
    if (encontro) {
        asignarDocumento();
    }    
}

function ingresarDocumento(documento, lstDcoumentoAsignados) {
    var ndepeIdentificador = $("cbodependencia").value;
    var ntidoIdentificador = documento.value;
    new Ajax.Request("documento-dependencia-asignado!input",{
        method: "post",
        asynchronous: false,
        parameters: {
            ntidoIdentificador: ntidoIdentificador,
            ndepeIdentificador: ndepeIdentificador
        },
        onSuccess: function(t){
            var data = t.responseText.evalJSON();
            if (data.success) {
                lstDcoumentoAsignados.appendChild(documento);
            }
        }
    });

}

function revocarDocumento() {
    var form = $("frmAsignarDocumento");
    var lstDocumentosDisponibles = form.lstDocumentosDisponibles;
    var lstDocumentosAsignados = form.lstDocumentosAsignados;
    var encontro = false;
    for(var i=0;i<lstDocumentosAsignados.options.length;i++) {
        if(lstDocumentosAsignados.options[i].selected) {
            eliminarDocumento(lstDocumentosAsignados.options[i], lstDocumentosDisponibles);
            encontro = true;
            break;
        }
    }
    if (encontro) {
        revocarDocumento();
    }
}

function eliminarDocumento(documento, lstDocumentosDisponbibles){
    var ndepeIdentificador = $("cbodependencia").value;
    var ntidoIdentificador = documento.value;
    
    new Ajax.Request("documento-dependencia-asignado!eliminar",{
        method: "post",
        asynchronous: false,
        parameters: {
            ntidoIdentificador: ntidoIdentificador,
            ndepeIdentificador: ndepeIdentificador
        },
        onSuccess: function(t) {
            var data = Ext.util.JSON.decode(t.responseText);
            if (data.success) {
                lstDocumentosDisponbibles.appendChild(documento);
            }
        }
    });
}

